import torch

# create test data
# 4张图片，3通道，28*28像素
a = torch.randn(4, 1, 28, 28)
print(a.shape)

# 1、转换为4，784维度
print(a.reshape(4, 784).shape)
print(a.view(4, 784).shape)

# 2、unsqueeze 插入维度
print(a.unsqueeze(0).shape)  # 插入在第0维
print(a.unsqueeze(-1).shape)  # 插入在倒1维

# 3、squeeze删除维度，只能删除为1的维度
print(a.squeeze().shape)  # 删除所有为1的维度

# 4、复制维度，分别复制2次和3次
print(torch.randn(2, 2).repeat(2, 3).shape)

# 5、维度交换
print(torch.randn(1, 2).t().shape)  # 对于二维可以转置
print(a.transpose(0, 1).shape)  # 只能两两交换
print(a.permute(1, 0, 3, 2).shape)  # 维度重排
